package in.indijava.scjp5questions;

import java.util.*; 

public class Generics {
	
	public static void main(String [] args) { 
		Set<Fruits> f1 = new TreeSet<Fruits>();
		Set<Citrus> c1 = new TreeSet<Citrus>(); 
		Set<Orange> o1 = new TreeSet<Orange>(); 
		Set<Object> obj = new TreeSet<Object>();
		bite(obj);
		bite(f1);
		bite(c1); 
		bite(o1); 
	} 
	
	interface Plant { }
	class Fruits implements Plant{ } 
	class Citrus extends Fruits{ } 
	class Orange extends Citrus { } 


	public static void bite(Set<?> s) { }  // OK
//	public static void bite(Set<Object> s) { }
//	public static void bite(Set<? extends Object> s) { }
//	public static void bite(Set<? extends Plant> s) { } 
//	public static void bite(Set<Citrus> s) { } 
//	public static void bite(Set<? super Fruits> s) { } 
//	public static void bite(Set<? super Citrus> s) { }
//	public static void bite(Set<? super Orange> s) { } 

//	public static void bite(Set<? extends Citrus> s) { }
//	public static void bite(Set<? extends Fruits> s) { }
	
}

